package org.shj.jvm.oom;

import java.nio.ByteBuffer;

/**
 * -verbose:gc -Xms10M -Xmx10M -XX:MaxDirectMemorySize=5M -XX:+PrintGCDetails
 * @author Administrator
 * 
 * 书上说会发生OutOfMemory异常，但是在JDK7 64位机器上就可以正常运行。
 * 当把 _MB的值 改成大于 -XX:MaxDirectMemorySize 的值时，才会发生异常
 *
 */
public class DirectOutofMemory {
	
	private static int _MB = 2*1024*1024;
	private static int cnt = 0;

	public static void main(String[] args) {
		try{
			int i = 0;
			while(i < 100){
				ByteBuffer bb = ByteBuffer.allocateDirect(_MB);
				cnt++;
				i++;
			}
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("cnt: " + cnt);
		}catch(Error e){
			e.printStackTrace();
			System.out.println("In Erro " );
			System.out.println("cnt: " + cnt);
		}

	}

}
